iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

練習程式系列 第 22

Android、java,RecyclerView

  • 分享至 

  • xImage
  •  

教學來源:
RecyclerView

RecyclerView OnClickListener (Best practice way)

整理

1
把RecyclerView的每一格的點擊事件放到OnbindViewHolder不是很好的方法,如果有很多項目,效率不好。(不知道為什麼)。放到ViewHolder才是最好的方法。

2
問題:How to access RecyclerView in androidx?
參考:解答1

3
問題:How to increase the font size in Android Studio?
參考:解答2

4
RecyclerView添加分割线的简便方法
Android Drawing Separator/Divider Line in Layout?

5
問題:I did not Import the Recycler View AndroidX Library, yet, i am using it. Why and How is it working?

參考: 這個-- >implementation 'com.google.android.material:material:1.0.0'
包括androidx.recyclerview:recyclerview:1.0.0

6問題:New Gradle Sync is not supported due to containing Kotlin modules using an unsupported plugin version

參考:解答1和2。Kotlin跟JVM的版本對不上。

其他問題:

1 更新RecyclerView有問題

這個問題的留言區:
Recyclerview java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
還有這還有這個問題:
Recycler View: Inconsistency detected. Invalid view holder adapter positionViewHolder

更新RecyclerView,可以用AsyncListDiffer:

DiffUtil is a must!
RecyclerView Performance with DiffUtil (Kotlin)
AsyncListDiffer

我是參考DiffUtil,照改:

DiffUtil is a must!
Using DiffUtil in Android RecyclerView
有參考程式:
Simultaneous Insertion and Removal in RecyclerView with Animation

一:

使用adapter的自己寫的update方法,就可以了:

adapter.updateListItems(List.toList())

用DiffUtil不能修改的,就使用之前的:

adapter.notifyItemChanged(position)

二:

getChangePayload方法,不用修改,就可以了(可以連這個方法都不寫),用的話,好像是傳到onBindViewHolder,再更改畫面,所以要更改項目裡的內容的話,就要寫getChangePayload?

三:

不過改完還是不能更新,好像是因為arraylist的關係,改成list就可以了。
DiffUtil is not updating the RecyclerView
Kotlin : 集合資料型態,List、Map、Set 集合

Kotlin 中的 List、Map、Set 只能讀取,無法進行修改,若需要可讀可寫,要使用 MutableList、MutableMap、MutableSet。

2 輸入完東西後,要把虛擬鍵盤關掉

Close/hide the Android Soft Keyboard

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

3

Inconsistency detected. Invalid view holder adapter positionViewHolder


上一篇
Android,CameraX、第三方camera套件 、 Touch Pinch
下一篇
android,TextInputLayout和 ScrollView
系列文
練習程式37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言